Hand-held data processing devices with data entry and display functions are increasingly used in numerous situations. Well-known examples of such devices include cellular telephones and “personal digital assistant” (PDA) devices. As greater processing power and decreased device size become more readily available, the use of hand-held data processing devices in medical, health care, financial, engineering and other settings will become increasingly widespread. The effective entry of data by users and the rapid processing and display of such data are important considerations in hand-held data processing devices. Various drawbacks, however, exist in the data entry and display provided by the currently available hand-held data processors.
Particularly, the small size of such hand held devices often complicates the entry of data via alphanumeric keypad, keyboard or touch screen. Various mechanisms for user entry of alphanumeric characters have been employed in hand-held devices. One such approach has been the use of a full “QWERTY” keyboard on the device display, as occurs in many PDA devices. The full keyboard is familiar to most users, and the pressing or actuation of only a single key is needed to enter and display the corresponding alphanumeric character. Display of a full keyboard on a small device, however, requires that the individual keys or buttons be very small, and the use of a stylus is necessary for data entry.
Another approach to data entry has been use of a conventional telephone alphanumeric keypad wherein multiple pressing or actuation of an individual key allows cycling through each of several characters associated with the key. For example, when the “2” key is initially pressed, a “2” is correspondingly displayed on the device display. Pressing the “2” key again changes the displayed “2” to an “A”, while a third pressing of the “2” key results in display of a “B”, and so on. While this approach allows data entry with a relatively small alphanumeric keypad, the entry of an individual alphanumeric symbol can require as many as four presses of a key to obtain a desired character. The entry of alphanumeric strings in this manner is not intuitive and is difficult for un-trained users. Further, many telephone keypads do not provide for the “Q” and “Z” characters, and entry of these characters must be accommodated by pressing a combination of two or more keys or by other data entry arrangement.
Still another approach to data entry has been to provide different portions of a display on different screen images, with a button or key provided to allow switching between the multiple screen images. For example, a first screen may be used to display numbers, while additional screens are used to display alphabetic characters. The overall number of screens required to display all alphanumeric characters depends on the size of the display. Three or four such screens are often required for a small display. The entry of alphanumeric strings can be quite complex and time consuming due to the necessity of switching between screens.
Another important consideration in the operation of hand-held data processing devices is error detection for digital data processed by the device. Error detection is typically carried out using cyclic redundancy check (CRC) calculation that is typically implemented by a division algorithm embodied in software, which is relatively slow and involves considerable computational overhead.
One approach to faster CRC calculation has been through use of a software lookup table in conjunction with AND and XOR operations to perform the equivalent of the division algorithm. This technique is still relatively slow for large data streams, and requires a significant amount of memory to store the look-up table (e.g., 512 bytes for a 16-bit CRC). An even faster technique utilizes a CRC circuit embodied in hardware, together with a software loop that increments through the data stream, writing each byte to the CRC circuit which performs the division algorithm. While use of a CRC circuit increases speed, the overhead of the software loop can still require relatively long periods of time for large streams of data.
Still another consideration in hand-held data processing devices is the time associated with writing data to the device display, which is typically a pixel-based liquid crystal display (LCD). Data output to a display controller typically involves a software-executed loop that increments through the output data stream, writing a byte at a time to the display controller. This arrangement is slow for pixel-based displays, as many bytes must generally be written in order to draw an alphanumeric character or icon on the display, and the overhead of the software loop is increased by each byte that is thus written.
Many work environments require that multiple users have access to hand held data processing devices, and validation of authorized users is yet another important consideration in the design and operation of such devices. The standard technique for user validation is entry of an identification (ID) character string by the user. The entered string is compared against a list of authorized strings maintained in an array or list in the device memory. The software searches through the list and compares the string of interest against each stored entry until a match is found or until the list of stored strings is exhausted. The list is typically arranged in sort order, and a binary search is performed. String comparison in this manner, however, can require a large amount of memory to store the authorized string list where the list is large and the string length is long. For example, storage of 4,000 strings with an 18 character maximum length requires 72,000 bytes. Further, the time required for string comparison, which is dependent upon the string length, can be quite long and result in substantial delay during user validation.
There is accordingly a need for hand-held data processing devices and methods that allow quick and easy entry of alphanumeric characters by users, that provides for rapid error checking of data during operation and rapid writing of data to a display, and which provides for rapid character string comparison for user authentication. The present invention satisfies these needs, as well as others, and generally overcomes the deficiencies found in the background art.